// Example of a "Divide-and-Conquer" solution to a problem SortExams(unsorted pile of exams, P) { if (P contains only 1 exam) { return; } else { Divide P into two sub-piles, p1 and p2 SortExams(p1); SortExams(p2); Once p1 and p2 are sorted, merge them into one big sorted pile P' by repeatedly taking the "least" exam from the top of p1 or p2 and adding it to P' } }